package com.sse.conexion;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;

import com.sse.VO.EventoVO;

/**
 * Clase que se encarga de gestionar la persistencia de la entidad de enventos
 * 
 * @author Carlos Ramirez
 * 
 */
public class ManejadorEventosBD {
	public static ArrayList<EventoVO> obtenerEventos() throws Exception {
		ArrayList<EventoVO> lEventos = new ArrayList<EventoVO>();

		Connection con = ConectorBD.getConexion();
		Statement sqlStatement = con.createStatement();
		ResultSet rs = null;

		rs = sqlStatement.executeQuery("select * from eventos");

		while (rs.next()) {

			EventoVO vo = new EventoVO();

			vo.setCodigoInmueble(rs.getInt("codinmueble"));
			vo.setCodigoSensor(rs.getInt("codsensor"));
			vo.setCodigoEvento(rs.getInt("codevento"));
			vo.setCodigoTagId(rs.getInt("codtagid"));
			vo.setTipoSensor(rs.getInt("tiposensor"));
			vo.setEsAlerta(rs.getBoolean("esalerta"));
			vo.setFecha(rs.getDate("fecha"));
			vo.setDescripcion(rs.getString("descripcion"));
			vo.setTiempoRespuesta(rs.getInt("tiemporespuesta"));
			vo.setMuestreo(rs.getInt("muestreo"));
			
			lEventos.add(vo);

		}

		con.close();

		return lEventos;
	}

	public static int ingresarEvento(EventoVO vo) throws Exception {
		String strSql = "INSERT INTO eventos(codinmueble,codsensor,codevento,codtagid,tiposensor,esalerta,fecha,descripcion,tiemporespuesta,muestreo)"
				+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

		Connection con = ConectorBD.getConexion();
		PreparedStatement pstmt = con.prepareStatement(strSql);

		pstmt.setLong(1, vo.getCodigoInmueble());
		pstmt.setLong(2, vo.getCodigoSensor());
		pstmt.setLong(3, vo.getCodigoEvento());
		pstmt.setLong(4, vo.getCodigoTagId());
		pstmt.setLong(5, vo.getTipoSensor());
		pstmt.setBoolean(6, vo.EsAlerta());
		pstmt.setTimestamp(7, new Timestamp(vo.getFecha().getTime()));
		pstmt.setString(8, vo.getDescripcion());
		pstmt.setLong(9, vo.getTiempoRespuesta());
		pstmt.setInt(10, vo.getMuestreo());
		int resultado = pstmt.executeUpdate();

		pstmt.close();
		con.close();

		return resultado;
	}

	public static void main(String[] args) throws Exception {

		EventoVO vo = new EventoVO();

		vo.setCodigoInmueble(3);
		vo.setCodigoSensor(1);
		vo.setCodigoTagId(1);
		vo.setCodigoEvento(3);
		vo.setTipoSensor(1);
		vo.setEsAlerta(true);
		vo.setDescripcion("ALERTA: FUEGO CASA");
		vo.setFecha(new Date());
		vo.setTiempoRespuesta(10);
		vo.setMuestreo(0);

		ManejadorEventosBD.ingresarEvento(vo);

		System.out.println(ManejadorEventosBD.obtenerEventos().size());

	}

}
